// 服务器的基础地址
const api = 'https://jyshop.yuejianschool.com'
// let token = ''
// const id = setInterval(() => {
//   token = wx.getStorageSync('token')
//   // console.log('token',token)
//   if (token) clearInterval(id)
// }, 500)
/**
 * @description 请求方法的封装
 * @param {String} url  请求地址
 * @param {String} key  token
 * @param {String} method  请求方法
 * @param {Object} data 要传的参数
 * @returns Promise
 */
const request = (url, token, method = 'get', data = {}) => {
  // console.log(url.indexOf('/api/user/bindingUser'),url)
  return new Promise((resolve, reject) => {
    wx.request({
      url: api + url,
      // login 接口不需要传 token
      header: url === '/api/common/login' ? {
        "version": 'v1',
        'api-access-token': 'ca87846db16a561b97c767e0624513f947f52345'
      } : {
        "version": 'v1',
        'api-access-token': 'ca87846db16a561b97c767e0624513f947f52345',
        'token': token,
      },
      method,
      data,
      success: res => {
        if(res.statusCode !== 200) wx.showToast({
          title: '出错了哦，请联系管理员',
          icon:'none'
        })
        if (res.data.code === 200) {
          resolve(res.data)
        } else if(url.indexOf('/api/user/bindingUser') === -1) {
          //错误提示
          wx.showToast({
            title: res.data.msg,
            icon:'none'
          })
        }
      },
      fail: (err) => {
        console.log(err)
        reject(err)
      }
    })
  })
}

/**
 * 
 * @param {*} params 
 */
const uploadImage = (filePath, token) => {
  wx.showLoading({
    title: '正在上传图片',
  })
  return new Promise((resolve, reject) => {
    wx.uploadFile({
      url: api + '/api/common/upload',
      header: {
        'content-type': 'multipart/form-data',
        "version": 'v1',
        'api-access-token': 'ca87846db16a561b97c767e0624513f947f52345',
        'token': token,
      },
      filePath: filePath,
      name: 'file',
      success: function (res) {
        resolve(res)
      },
      fail: function (res) {
        console.log(res)
        wx.showToast({
          title: res.data.msg,
          icon:'none'
        })
        reject(res)
      },
      complete: () => {
        wx.hideLoading()
      }
    })
  })
}


/**
 * @description 深复制对象的方法
 * @param {Object} target 要克隆的对象
 */
function deepClone(target) {
  // 定义一个变量
  let result;
  // 如果当前需要深拷贝的是一个对象的话
  if (typeof target === 'object') {
    // 如果是一个数组的话
    if (Array.isArray(target)) {
      result = []; // 将result赋值为一个数组，并且执行遍历
      for (let i in target) {
        // 递归克隆数组中的每一项
        result.push(deepClone(target[i]))
      }
      // 判断如果当前的值是null的话；直接赋值为null
    } else if (target === null) {
      result = null;
      // 判断如果当前的值是一个RegExp对象的话，直接赋值    
    } else if (target.constructor === RegExp) {
      result = target;
    } else {
      // 否则是普通对象，直接for in循环，递归赋值对象的所有值
      result = {};
      for (let i in target) {
        result[i] = deepClone(target[i]);
      }
    }
    // 如果不是对象的话，就是基本数据类型，那么直接赋值
  } else {
    result = target;
  }
  // 返回最终结果
  return result;
}

module.exports = {
  request,
  deepClone,
  uploadImage
}